home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / ex / AutoDeriv.c < prev    next >
C/C++ Source or Header  |  1990-05-15  |  998b  |  47 lines

  1. //  AutoDeriv.c -- one dimensional automatic derivative
  2.  
  3. // $Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/ex/RCS/AutoDeriv.c,v 3.0 90/05/15 22:43:24 kgorlen Rel $
  4. /*
  5. Author:
  6.     S.M.Orlow
  7.     Systex, Inc.
  8.     Beltsville, MD 20705
  9.     301-474-0111
  10.     sandy@alw.nih.gov
  11. */
  12.  
  13. #include <iostream.h>
  14. #include "AutoDeriv.h"
  15.  
  16. void AutoDeriv::operator=(const AutoDeriv& x) 
  17. {
  18.     u=F(x); du=dF(x);
  19. }
  20. int AutoDeriv::operator==(const AutoDeriv& x) const
  21. {
  22.     return (u==F(x)&&du==dF(x));
  23. }
  24.  
  25. AutoDeriv AutoDeriv::operator-() const
  26. {
  27.     return AutoDeriv(-u,-du);
  28. }
  29.  
  30. AutoDeriv AutoDeriv::pow(int k) const
  31. {
  32.     if ( k==0 )  return AutoDeriv(1,0);
  33.    else if ( k==1 )  return *this;
  34.    else if ( k>1 )   return (*this)*(this->pow(k-1));
  35.    else    /*k<0*/   return AutoDeriv(1,0)/this->pow(-k);
  36. }
  37.  
  38. void AutoDeriv::printOn(ostream& strm) const
  39. {
  40.     strm << "[" << u << "," << du << "]";
  41. }
  42. ostream& operator<<(ostream& strm, const AutoDeriv& x)
  43. {
  44.     x.printOn(strm);
  45.     return strm;
  46. }
  47.